// 兼容：对象类型（多个属性类型），对象：属性的集合。
// TS：对象赋值的时候，检查的是属性集合。结构化类型。

// 宠物,类型
interface Pet {
  name: string;
  run: () => void;
}

// 狗，类型
interface Dog {
  name: string;
  run: () => void;
}

// 创建两个变量（对象）
let dog: Dog = {
  name: '旺财',
  run: () => {
    console.log('run run');
  },
};
// console.log(dog);

// 鸭子
interface Duck {
  name: string;
  run: () => void;
  swim: () => void;
}

// 定义一个鸭子
let duck: Duck = {
  name: 'duck',
  run: () => {
    console.log('run');
  },
  swim: () => {
    console.log('swim');
  },
};
// console.log(duck);

// 我这个宠物也是一条狗
let pet: Pet = dog; // 类型兼容性发生了

pet = duck; //
// 干啥？
console.log(pet.name); // ??
console.log(pet.run); // ??
